A user's computing experience is affected by the scarcity or abundance of computer resources. One such resource is network bandwidth in the client-server computing model. The less bandwidth available to the user, the less quickly the user will be able to access data over a communications link or run applications that rely on data transmitted through the communications link. The bandwidth limitation is aggravated in the case of mobile clients, i.e., clients that exist in client-server environments or other environments and that attempt to transmit data through wireless or other non-fixed connections. Further, when applications or data designed for high bandwidth networks is used in bandwidth-limited networks, the computing environment of a user at a client computer, including mobile client computers, can become extremely slow. For mobile clients that rely on standalone battery power, the time consumed by receiving a file over a bandwidth-limited network also consumes computing time that could be spent on other tasks.
Adaptation is the manipulation of the operation of an application or the alteration of data that is being used by or transmitted to or from an application. The two fundamental kinds of adaptation are control adaptation, such as when the operation of an application is manipulated, and data adaptation, which occurs when the data of application is adapted. A common example of control adaptation occurs when control is returned to the user after only a subset of the requested data is loaded by the application, even though the normal behavior of the application would require that all of the data be loaded before control is returned to the user. A common example of data adaptation occurs when the content of a data element is altered to improve the latency effect of computing with the data in mobile computing or client-server computing environments. Many adaptation schemes involve a change to both the behavior of an application and the data of the application. Known control adaptation schemes often involved customized applications designed to be adaptable by the user, or the use of standard applications together with specialized operating systems or applications that adapt the content of data used by the applications, or combinations thereof.
Application programs may be logically organized to include several sub-applications or components. Each component of the application may perform a specialized function. As an example, an office productivity application may include a word processing component, a spreadsheet component, and an image presentation component. Although each of the components can exist separately as its own application, in this example, each of the components is a subset of a larger application. The integration of components into a larger application is made possible by the inclusion in each component of a known application programming interface (API). The use of an open API allows an application to be constructed from several individual components from several sources. In addition to APIs that allow the embedding of a document of one component within a document of another component, an application may also include an automation or scripting API that permits one component to control the behavior of another component.
Examples of component-based applications include the Microsoft Office Suite, MICROSOFT INTERNET EXPLORER, AOL's NETSCAPE COMMUNICATOR, KDE Office Suite, and Star Office. Although traditionally associated with the Windows platform and with Component Object Model/Distributed Component Object Model COM/OLE technology, component-based technologies are becoming more common in the UNIX world as well, where the push for component-based technologies is being led by the GNOME and KDE projects. These open source initiatives strive to enable the development of applications that allow the seamless integration of components that have a consistent look-and-feel. An example is KOffice, an open source productivity suite with powerful scripting capabilities. More recently, StarOffice released a version of its cross-platform productivity suite that implements a sophisticated object model that allows scripting by third-party applications through a CORBA-based interface.
A file generated by a component-based application is often a compound file, containing elements created by several of the sub-applications or components. As an example, a compound file could include a spreadsheet, an image, and text. Generally, every data type in a compound file is created and managed by a separate one of the sub-applications or components. These data files may become quite large, and, when communicated in a mobile computing environment or over a client-server network, may contribute to a significant latency effect being experienced by the user. Thus, even though these compound files provide for the accumulation of several different data types within a single file, these documents can be so large that the users experience severe latency effects when requesting the delivery of these files over client-server networks.